

#if 0

#pragma once

#include "log_prepare.h"

#include <string>


namespace tools{

    enum eCOMMANDLOG
    {
        ENDL,
    };

    struct Log
    {
        typedef ::std::string Str;

        enum eConfig{ eTAB_SIZE = 2 }; 
       ~Log();
        Log(const char* funcName, const char* file, const size_t line);

        Log& operator<<(const eCOMMANDLOG& command );

        template<class T> Log& operator<<(const T& data )  
        {
            typedef ::std::remove_pointer<T>::type Function;
            enum { eIS_FUNC = ::std::is_function<Function>::value };
            static_assert( eIS_FUNC==0, "ERROR_POINTER_TO_FUNCTION_NOT_SUPPORT" );

            std::ostringstream ss;
            ss<< data;
            Add( ss.str() );
            return *this;
        }

        #define StdStream\
            ::std::basic_ostream<char, ::std::char_traits<char> >
        Log& operator<<( StdStream&(*std_manipulator)(StdStream&) )  
        {
            const bool ERROR_SUMMPORT_ONLY_ENDL = std_manipulator != ::std::endl;
                assert(!ERROR_SUMMPORT_ONLY_ENDL);
            Endl();
            return *this;
        }
        #undef StdStream

        void Add(const Str& line);
        void Endl();
    };

}//namespace tools





#endif